/////precompiled////////
#include "precompiled.h"
////////////////////////


#include "prs_FrmBorder.h"
using namespace prs;

// TRuleFrmBorder /////////////////////////////////////////////////////////////

//
TRuleFrmBorder::TRuleFrmBorder(snt::text::TContext &Context,svl::TVariant &VBorder)
:vBorder(VBorder)
{
  snt::TFVoid          F;
  snt::TReturn         Return;
  snt::text::TSequence T(Context);
  snt::text::TNumber   N(Context);

  vThis = this;

  this->Name(GetClassName())
  | T.New("border") & T.New("=")
    & N.New(vL) & T.New(",") 
    & N.New(vT) & T.New(",") 
    & N.New(vR) & T.New(",") 
    & N.New(vB) & F.New(FBorder,vThis)
    & Return.New()
  ;
}

//
frm::TBorder &TRuleFrmBorder::GetBorder()
{
  frm::TBorder *P = dynamic_cast<frm::TBorder*>(vBorder.Pointer()); 
  
  if (!P) { 
    Except("GetBorder[!P]");
  }
  return *P;
}

//
void TRuleFrmBorder::FBorder(snt::TParams &Params) 
{ 
  TRuleFrmBorder &R = GetThis(Params[0]);
  R.GetBorder().Set(
    R.vL.Integer(),R.vT.Integer(),R.vR.Integer(),R.vB.Integer()
  ); 
}
